package com.sgg.datastructure.circleLinkedList;

import java.util.LinkedList;

public class Other {
    public static int josephRingMethod(int n, int m){

        LinkedList<Integer> linkedList = new LinkedList();
        for (int i = 1; i <= n; i++) {
            linkedList.add(i);
        }

        int index = m - 1;  //初始化，index指向第一个出列的人
        while (linkedList.size() != 0){
            System.out.println(linkedList);
            //用 **索引 % 链表长度** 进行取余操作，避免下标越界
            index %= linkedList.size();

            //出列
            System.out.println(linkedList.get(index) + "号出列");
            linkedList.remove(index);

            //返回最后剩下的人的编号
            if (linkedList.size() == 1){
                return linkedList.get(0);
            }
            //新的索引就要从出列的人重新开始数，再次数到m-1。
            index += m - 1;
        }

        return -1;
    }

    public static void main(String[] args) {
        System.err.println(Other.josephRingMethod(120, 10));
    }
}
